//package myproject.test;
//
//import java.util.List;
//
//import org.apache.poi.ss.SpreadsheetVersion;
//import org.apache.poi.ss.usermodel.BorderStyle;
//import org.apache.poi.ss.usermodel.DataConsolidateFunction;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.ss.usermodel.Workbook;
//import org.apache.poi.ss.util.AreaReference;
//import org.apache.poi.ss.util.CellRangeAddress;
//import org.apache.poi.ss.util.CellReference;
//import org.apache.poi.ss.util.RegionUtil;
//import org.apache.poi.util.StringUtil;
//
///** 
// * 2021年3月15日
// * 生成数据透视表
// * 
// * */
//public class GeneratePivotTable {
//
//	
//	/**
//     * 导出EXCEL---poi
//     */
//    @Override
//    public void pivot(HttpServletResponse response) throws Exception{
//        //创建excel在内存中 .xls
//        Workbook wb = new XSSFWorkbook();
//        //创建一个sheet页
//        Sheet sheet = wb.createSheet("患者信息一览表");
////        //获取单元格格式信息
//        ExcelCellPojo pojo = new ExcelCellPojo(wb);
//        //表头
//        String[] headStr={"id","入ICU时间","出院时间","转科时间","诊断情况","转归","呼吸机使用","高流量","PICCO","ECMO","CRRT"};
//        //开始的行号
//        int rowIndex=0;
//        //创建标题栏
//        Row title =sheet.createRow(rowIndex);
//        //设置行高
//        title.setHeightInPoints(75);
//        title.createCell(0).setCellValue("患者信息一览表");
//        title.getCell(0).setCellStyle(pojo.getTitleCellStyle());
//        //创建合并单元格
//        CellRangeAddress cra=new CellRangeAddress(0,0,0,headStr.length-1);
//        sheet.addMergedRegion(cra);
//        // 下边框
//        RegionUtil.setBorderBottom(BorderStyle.THIN, cra, sheet);
//        // 左边框
//        RegionUtil.setBorderLeft(BorderStyle.THIN, cra, sheet);
//        // 有边框
//        RegionUtil.setBorderRight(BorderStyle.THIN, cra, sheet);
//        // 上边框
//        RegionUtil.setBorderTop(BorderStyle.THIN, cra, sheet);
//        //创建表头的一行
//        Row header = sheet.createRow(++rowIndex);
//        //设置行高
//        header.setHeightInPoints(60);
//        //循环创建表头赋值
//        for (int i = 0; i < headStr.length; i++) {
//            //设置列宽度 -第1列
//            sheet.setColumnWidth(i,5400);
//            //创建表头第一列并且赋值
//            header.createCell(i).setCellValue(headStr[i]);
//            //设置单元格样式
//            header.getCell(i).setCellStyle(pojo.getHeaderStyle());
//        }
//        //查询数据
//        List<TestPatientInf> patientList = super.selectAll();
//        for (TestPatientInf patientInf:patientList) {
//            ++rowIndex;
//            //从第2行开始创建
//            Row row = sheet.createRow(rowIndex);
//            row.setHeightInPoints(40);
//            row.createCell(0).setCellValue(patientInf.getId());
//            row.getCell(0).setCellStyle(pojo.getCellStyle());
//            row.createCell(1).setCellValue(patientInf.getIcuTimeIn());
//            row.getCell(1).setCellStyle(pojo.getDateCellStyle());
//            row.createCell(2).setCellValue(patientInf.getDischargeTime());
//            row.getCell(2).setCellStyle(pojo.getDateCellStyle());
//            row.createCell(3).setCellValue(patientInf.getCollegeTime());
//            row.getCell(3).setCellStyle(pojo.getDateCellStyle());
//            row.createCell(4).setCellValue(patientInf.getDiagnosis());
//            row.getCell(4).setCellStyle(pojo.getCellStyle());
//            row.createCell(5).setCellValue(patientInf.getOutcome());
//            row.getCell(5).setCellStyle(pojo.getCellStyle());
//            row.createCell(6).setCellValue(StringUtil.isNullOrBlank(patientInf.getHxjsy())?"无":patientInf.getHxjsy());
//            row.getCell(6).setCellStyle(pojo.getCellStyle());
//            row.createCell(7).setCellValue(StringUtil.isNullOrBlank(patientInf.getGll())?"无":patientInf.getGll());
//            row.getCell(7).setCellStyle(pojo.getCellStyle());
//            row.createCell(8).setCellValue(patientInf.getPicco()==null?0:patientInf.getPicco());
//            row.getCell(8).setCellStyle(pojo.getDoubleCellStyle());
//            row.createCell(9).setCellValue(patientInf.getEcmo()==null?0:patientInf.getEcmo());
//            row.getCell(9).setCellStyle(pojo.getCellStyle());
//            row.createCell(10).setCellValue(patientInf.getCrrt()==null?0:patientInf.getCrrt());
//            row.getCell(10).setCellStyle(pojo.getCellStyle());
//        }
//
//        //创建数据透视表--新的sheet页码
//        //为需要汇总和创建分析的数据创建缓存
//        XSSFSheet pivotSheet  = (XSSFSheet)wb.createSheet("患者信息透视表");
//        //左边起始单元格
//        CellReference leftStart=new CellReference(ExcelUtils.getCellLocation(2,1));
//        //右边结束单元格
//        CellReference rightEnd=new CellReference(ExcelUtils.getCellLocation(rowIndex+1,headStr.length));
//        // 数据透视表生产的起点单元格位置
//        CellReference ptStartCell = new CellReference("A4");
//        //创建数据透视表格
//        AreaReference area = new AreaReference(leftStart, rightEnd, SpreadsheetVersion.EXCEL2007);
//        XSSFPivotTable pivotTable = pivotSheet.createPivotTable(area,ptStartCell,sheet);
//        //头上的列标签
//        pivotTable.addColLabel(1);
//        //透视表 列值
//        pivotTable.addColumnLabel(DataConsolidateFunction.COUNT, 0,"计数项:入ICU时间");
//        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 8,"求和项:PICCO");
//        //透视表 行标签
//        pivotTable.addRowLabel(0);
//        //透视表 行的值
//        pivotTable.addRowLabel(1);
//        pivotTable.addRowLabel(2);
//        pivotTable.addRowLabel(3);
//        pivotTable.addRowLabel(4);
//        ExcelUtils.exportExcel(wb,"test_aaa.xlsx",response);
//    }
//}
